package com.ruoyi.yys.service;

import java.util.List;

import cn.hutool.core.date.TimeInterval;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.yys.domain.ImportExportTask;
import com.ruoyi.yys.domain.JdbcConfig;
import com.ruoyi.yys.domain.entityBo.ImportExportParamBo;

import javax.servlet.http.HttpServletResponse;

/**
 * 导入导出任务Service接口
 * 
 * @author xinyin
 * @date 2022-12-07
 */
public interface IImportExportTaskService 
{
    /**
     * 查询导入导出任务
     * 
     * @param id 导入导出任务主键
     * @return 导入导出任务
     */
    public ImportExportTask selectImportExportTaskById(String id);

    /**
     * 查询导入导出任务列表
     * 
     * @param importExportTask 导入导出任务
     * @return 导入导出任务集合
     */
    public List<ImportExportTask> selectImportExportTaskList(ImportExportTask importExportTask);

    /**
     * 新增导入导出任务
     * 
     * @param importExportTask 导入导出任务
     * @return 结果
     */
    public int insertImportExportTask(ImportExportTask importExportTask);

    /**
     * 修改导入导出任务
     * 
     * @param importExportTask 导入导出任务
     * @return 结果
     */
    public int updateImportExportTask(ImportExportTask importExportTask);

    /**
     * 批量删除导入导出任务
     * 
     * @param ids 需要删除的导入导出任务主键集合
     * @return 结果
     */
    public int deleteImportExportTaskByIds(String[] ids);

    /**
     * 删除导入导出任务信息
     * 
     * @param id 导入导出任务主键
     * @return 结果
     */
    public int deleteImportExportTaskById(String id);

    /**
     * 导出文件，并将操作记录入库
     *
     * @param importExportParamBo 进出口参数波
     * @return {@link String}
     */
    String exportByTempId(ImportExportParamBo importExportParamBo);

    /**
     * 根据任务id 下载已完成好的文件
     *
     * @param id       id
     * @param fileName 文件名称
     * @param response 响应
     * @return {@link R}
     */
    R downlodaFileById(String id, String fileName, HttpServletResponse response);

    /**
     * 更新进度
     *
     * @param id             id
     * @param rate           率
     * @param s              年代
     * @param time 间隔第二
     * @return int
     */
    int updateProgress(String id, long rate, String s, String time);

    /**
     * 更新任务结束
     *
     * @param id       id
     * @param second   第二个
     * @param msg      味精
     * @param filePath 文件路径
     * @return int
     */
    int updateTaskEnd(String id, String second, String msg,String filePath);

    /**
     * 重新开始任务 根据任务id
     *
     * @param id id
     */
    void restartTaskById(String id);

    /**
     * 更新任务状态
     *
     * @param id   id
     * @param code 代码
     * @return int
     */
    int updateTaskStatus(String id, int code,ImportExportParamBo importExportParamBo);

    /**
     * 封装异常时插入异常消息(异常结束)
     *
     * @param id     id
     * @param msg    味精
     * @param status 状态
     * @param timer  计时器
     */
    void opError(String id, String msg, Integer status, TimeInterval timer);

    /**
     * 将文件内容导入到数据库中
     *
     * @param importData 导入数据
     * @return {@link String}
     */
    String importByFile(ImportExportParamBo importData);

    /**
     * 根据模板id获取jdbc配置
     *
     * @param templateId 模板id
     * @return {@link JdbcConfig}
     */
    JdbcConfig getJdbcByTemplateId(Long templateId);

    /**
     * 更新状态通过id
     *
     * @param id     id
     * @param msg    味精
     * @param second 第二个
     * @return int
     */
    int updateStatusById(String id, String msg, String second);
}
